package com.laker.admin.module.sys.service.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.laker.admin.module.sys.entity.SysDept;
import com.laker.admin.module.sys.mapper.SysDeptMapper;
import com.laker.admin.module.sys.service.ISysDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author laker
 * @since 2021-08-11
 */
@Service
@Transactional
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements ISysDeptService {

    @Override
    synchronized public boolean addOrChange(SysDept sysDept) {
        int count = this.count(Wrappers.<SysDept>lambdaQuery()
                .eq(SysDept::getDeptName,sysDept.getDeptName())
                .or()
                .eq(SysDept::getDeptNum,sysDept.getDeptNum()));
        if(count > 0)
        {
            return false;
        }
        return this.saveOrUpdate(sysDept);
    }

    @Override
    public boolean disableOrEnable(SysDept sysDept) {
        //禁用判断
        if(! sysDept.getStatus() )
        {
            int count;
            //这个部门下是否有正常用户
            //这个部门下是否有正常部门
            count = this.count(Wrappers.<SysDept>lambdaQuery()
                    .eq(SysDept::getPid,sysDept.getDeptId())
                    .eq(SysDept::getStatus,true));
            if(count > 0)
            {
                return false;
            }
        }
        return this.saveOrUpdate(sysDept);
    }
}
